﻿using UnityEngine;
public class Cursor : MonoBehaviour
{
    private MeshRenderer meshRenderer;
    // Use this for initialization 初始化时候调用
    void Start()
    {
        // Grab the mesh renderer that's on the same object as this script.
        // 获取 meshRenderer
        meshRenderer = this.gameObject.GetComponentInChildren<MeshRenderer>();
    }
    // Update is called once per frame 每一帧都会自动更新
    void Update()
    {
        // 根据用户头的位置和朝向发射射线；
        // head position and orientation.
        var headPosition = Camera.main.transform.position;//头部位置是相机的位置；
        var gazeDirection = Camera.main.transform.forward;//头部朝向；
        RaycastHit hitInfo;//用于存储射线碰撞到的第一个对象信息。需要提前创建这个对象。
        if (Physics.Raycast(headPosition, gazeDirection, out hitInfo))//Physics.Raycast此静态函数用于在场景中发射一条可以喝碰撞器碰撞的射线
        {
            // 如果射线碰到了hologram，显示光标；
            meshRenderer.enabled = true;// Move the cursor to the point where the raycast hit.把光标移到射线碰撞的地方；
            this.transform.position = hitInfo.point;//将光标移到射线碰撞位置;将光标与hologram的表面平行；
            this.transform.rotation = Quaternion.FromToRotation(Vector3.up, hitInfo.normal);
        }
        else
        {
            //如果没有碰到物体隐藏光标；
            meshRenderer.enabled = false;
        }
    }
}